<?php

namespace Module;

class UserModule extends BaseModule {

    /**
     *
     */
    public function loginAction() {
        if(isset($_SESSION['user']) && !empty($_SESSION['user'])){
            header( 'Location: /', true, 301 );
        }
        
        $error = '';
        
        if(isset($_POST['username']) && isset($_POST['password'])){
            $login = $_POST['username'];
            $password = $_POST['password'];
            if($user = \Lib\Model\UserModel::checkAuth($login, $password)){
                $_SESSION['user'] = $login;
                $_SESSION['roles'] = $user['roles'];
                header( 'Location: /', true, 301 );
            } else {
                $error = 'Неправильный логин или пароль';
            }
        }
        
        return $this->showTemplate(__FUNCTION__, array('error'=> $error));
    }
    
    /**
     *
     */
    public function registrationAction() {
        if(isset($_SESSION['user']) && !empty($_SESSION['user'])){
            header( 'Location: /', true, 301 );
        }
        
        $form = array();
        
        if(isset($_POST['username']) && isset($_POST['email']) && isset($_POST['password']) && isset($_POST['confirm_password'])){
            $form['username'] = $_POST['username'];
            $form['email'] = $_POST['email'];
            $form['confirm_password'] = $_POST['confirm_password'];
            $form['password'] = $_POST['password'];
            $form = array_merge($form, $this->validate($form));
            if($form['success'] == TRUE && \Lib\Model\UserModel::register($form)){
                return $this->showTemplate(__FUNCTION__, array('form'=> $form), 'layout.php', 'Success');
            }
        }
        
        return $this->showTemplate(__FUNCTION__, array('form'=> $form));
    }
    
    protected function validate($form){
        $result = array(
            'success' => FALSE,
            'errors'  => array()
        );
        if(empty($form['username'])){
            $result['errors']['username'] = 'Поле "Логин" не может быть пустым.';
        }
        if(empty($form['email'])){
            $result['errors']['email'] = 'Поле "email" не может быть пустым.';
        }
        if(empty($form['password'])){
            $result['errors']['password'] = 'Поле "Пароль" не может быть пустым.';
        }
        if(empty($form['confirm_password'])){
            $result['errors']['confirm_password'] = 'Поле "Повторите пароль" не может быть пустым.';
        }
        if(!filter_var($form['email'], FILTER_VALIDATE_EMAIL)){
            $result['errors']['email'] = 'Поле "email" неверного формата.';
        }
        if($form['confirm_password'] != $form['password']){
            $result['errors']['password'] = 'Поля "Пароль" и "Повторите пароль" не равны.';
        }
        if(empty($result['errors'])){
        switch(\Lib\Model\UserModel::checkUnique($form['username'], $form['email'])){
            case 1:                
                $result['errors']['username'] = 'Пользователь с таким логином уже зарегистрирован.';
                break;
            case 2:
                $result['errors']['email'] = 'Пользователь с таким адресом уже зарегистрирован.';
                break;
            default:
        }
        }

        if(empty($result['errors'])){
            $result['success'] = TRUE;
        }
        return $result;
    }

    /**
     *
     */
    public function logoutAction() {
        $_SESSION['user'] = 0;
        $_SESSION['roles'] = 'ROLE_GUEST';
        header( 'Location: /', true, 301 );
    }
    
    /**
     * 
     */
    public function setVisitAction() {
        \Lib\Model\OnlineUsersModel::setOnline();
        header("Content-Type: image/png");
    }

    static function authHeaderAction(){
        $params = array();
        $view = \Lib\Registry::get('view');
        if(\Lib\Model\UserModel::isAuth()){
            echo '
            <ul id="ul-login">
            <li>'.$view->__('Hello').', <a href="/profile/'. $_SESSION['user'] .'">'. $_SESSION['user'].'</a>!</li>
            <li class="new-a"><a href="/logout">'. $view->__('Logout') .'</a></li>
                  </ul>';      
        } else {
            echo '<ul id="ul-login">
                <li class="new-a" id="menu-registration">'. $view->__('Registration') .'</li>
                <li class="new-a" id="menu-login">'.  $view->__('Login') .'</li>
            </ul>';
        }
    }
    
    public function onlineUsersAction(){
        $users = \Lib\Model\OnlineUsersModel::getOnline();
        $unreg = 0;
        return $this->showTemplate(__FUNCTION__, array('users'=> $users, 'unreg'=> $unreg), '');
    }
    
    public function loginMenuAction(){
        if(\Lib\Model\UserModel::isAuth()){
            return true;
        }
        return $this->showTemplate(__FUNCTION__, array(), '');
    }
    
}

?>
